package com.wtwd.campus.vcom.service;

import com.wtwd.campus.vcom.entity.VcomH5Fence;
import com.wtwd.campus.vcom.entity.VcomH5UserDevice;
import com.wtwd.campus.vcom.entity.VcomStudentDevice;
import com.wtwd.campus.vcom.entity.VcomWarningRecord;
import com.wtwd.campus.vcom.entity.vo.VcomH5FenceVO;

import java.util.List;

/**
 * @author px
 */
public interface VcomH5Service {
    /**
     * 根据h5用户id查询一条绑定关系
     */
    VcomH5UserDevice getBindingById(Integer id );

    /**
     * 新增一条h5绑定信息
     * @param data
     * @return
     */
    int addVcomH5Binding(VcomH5UserDevice data);

    /**
     * 修改一条h5绑定信息
     * @param data
     * @return
     */
    int modifyVcomH5Binding(VcomH5UserDevice data);

    /**
     * 获取设备的所有围栏信息
     * @param deviceId
     * @return
     */
    List<VcomH5Fence> getVcomFenceListByDeviceId(Integer deviceId);


    /**
     * 获取一个学生的所有围栏信息
     * @param stuId
     * @return
     */
    List<VcomH5Fence> getVcomFenceListByStuId(String stuId);

    /**
     * 修改一个学生所有围栏的所属设备
     * @param deviceId
     * @param stuId
     * @return
     */
    int modifyVcomFenceDeviceId(Integer deviceId, String stuId);

    /**
     * 根据学生id和围栏id删除一笔围栏
     * @param id
     * @param stuId
     * @return
     */
    int deleteFenceByIdAndStuId(Integer id, String stuId);

    /**
     * 修改h5围栏信息
     * @param data
     * @return
     */
    int modifyFenceInfo(VcomH5FenceVO data);

    /**
     * 新增一个h5围栏
     * @param data
     * @return
     */
    int addFenceInfo(VcomH5FenceVO data);

    /**
     * 根据id查询一笔围栏信息
     * @param id
     * @return
     */
    VcomH5Fence getFenceInfoById(Integer  id);

    /**
     * 保存一笔Vcom的告警记录
     * @param record
     * @return
     */
    int addVcomWarningRecord(VcomWarningRecord record);

    /**
     * 根据设备id获取学生id（从h5围栏表中）
     * @param deviceId
     * @return
     */
    String getStudentIdByDeviceId(Integer deviceId);

    /**
     * 根据设备imei获取学生id（从学生和设备的绑定关系中）
     * @param imei
     * @return
     */
    List<String> getStudentIdByImei(String imei);

    /**
     * 获取一个学生的所有类型的告警记录
     * @param num
     * @return
     */
    List<VcomWarningRecord> getStudentWarningRecords(Integer num,String stuId);

    /**
     * 根据学生id查询学生设备的绑定关系
     */
    VcomStudentDevice getVcomStudentDeviceByStuId(String stuId);

    /**
     * 新增一笔学生设备绑定关系
     */
    int addStudentDeviceBinding(VcomStudentDevice data);

    /**
     * 修改一笔学生设备绑定关系
     */
    int modifyStudentDeviceBinding(VcomStudentDevice data);

    /**
     * 根据imei将未归属的告警信息归属给学生
     * @param imei
     * @return
     */
    int modifyWarningRecordStudentIdByImei(String imei,String stuId);
}
